<?php
namespace app\admin\controller;
use think\Controller;

Class Cate extends BaseAdmin
{

	//栏目列表
    public function lst()
    {
        
        $obj=db('tp_cate');
        if(request()->isPost()){
            $data0=input('post.');
            $this->CateTree->cateSort($data0['sort'],$obj);
            $this->success('排序成功', url('cate/lst'));
        
        }   
    	
        //无限极分类
        $data=$obj->order('sort DESC')->select();
        $data=$this->CateTree->CateTree($data);
        $this->assign('data',$data);
        return $this->fetch('list');

    }



    //栏目添加（系统和网店信息栏目不允许有下级栏目，帮助分类下的子栏目不能再有子栏目，修改添加帮助分类子栏目的类型）
    public function add()
    {
       
        $obj=db('tp_cate');
        $data=$obj->order('sort DESC')->select();
        $data=$this->CateTree->CateTree($data);
        $this->assign('data',$data);


        if(request()->isPost()){
        	$data=input('post.');

            //系统和网店信息栏目不允许有下级栏目
            if(in_array($data['pid'],['1','3'])){
               $this->error('系统分类和网店信息不允许添加子栏目！');

            }

            //帮助分类下子栏目的类型
            if($data['pid']==2){
                $data['cate_type']=3;
            }

            //帮助分类下的子栏目不能再有子栏目
            $cate=$obj->field('pid')->find($data['pid']);
            if($cate['pid']==2){
                 $this->error('此分类不允许添加子栏目！');
            }



        	//验证
        	$validate = new \app\admin\validate\Cate;
        	if (!$validate->check($data)) {
        		$this->error($validate->getError());
        	}
        	
        	$add=$obj->insert($data);
        	if($add){
        		$this->success('保存成功','lst');
        	}
        	else{
        		$this->error('保存失败');
        	}

        }
        return $this->fetch();

    }



    //栏目编辑
    public function edit($id)
    {


       
        $obj=db('tp_cate');
        $data=$obj->order('sort DESC')->select();
        $data=$this->CateTree->CateTree($data);


        //
        $list=$obj->where(array('id'=>$id))->find();
        $this->assign(['data'=>$data,'list'=>$list]);


    	if(request()->isPost()){
        	
            $data=input('post.');
            $up=$obj->where(array('id'=>$id))->update($data);
        	
        	if($up!==false){
        		$this->success('修改成功','lst');
        	}
        	else{
        		$this->error('修改失败');
        	}

        }
        return $this->fetch();
    }



    //栏目删除(删除上级栏目，所有下级栏目都要删除)
    public function del($id)
    {   
        //栏目下所有子栏目id
        $cate=db('tp_cate');
        $sonids=$this->CateTree->childrenids($id,$cate);
        $sonids[]=intval($id);
       
        //与系统栏目交集
        $sys=[1,2,3];
        $res=array_intersect($sys,$sonids);
        if($res){
            $this->error('系统内置栏目不允许删除');
        }

        //删除子栏目下的文章和文章缩略图
        $article=db('tp_article');
        foreach ($sonids as $k => $v) {
           $ArtRes=$article->field('id,thumb')->where(array('cate_id'=>$v))->select();
           foreach ($ArtRes as $k1 => $v1) {
            $ARtImg=IMG_UPLOADS.$v1['thumb'];
                if(file_exists($ARtImg)){
                    @unlink($ARtImg);
                }
                $article->delete($v1['id']);
            }

        }

    	$del=db('tp_cate')->delete($sonids);
    	if($del){
    		$this->success('删除成功','lst');

    	}else{
            $this->error('删除失败');
    	}
    	
        return $this->fetch();
    }




}